
//此源码被清华学神尹成大魔王专业翻译分析并修改
//尹成QQ77025077
//尹成微信18510341407
//尹成所在QQ群721929980
//尹成邮箱 yinc13@mails.tsinghua.edu.cn
//尹成毕业于清华大学,微软区块链领域全球最有价值专家
//https://mvp.microsoft.com/zh-cn/PublicProfile/4033620
//版权所有（c）2014 BTCSuite开发者
//此源代码的使用由ISC控制
//可以在许可文件中找到的许可证。

/*
包addrmgr实现并发安全比特币地址管理器。

地址管理器概述

为了维护对等比特币网络，需要有一个来源
当节点进出时要连接的地址。比特币协议提供
允许对等端与已知地址通信的getaddr和addr消息
彼此。但是，需要一种机制来存储这些结果，并且
从中选择对等点。同样重要的是，远程对等机不能
要信任发送有效的对等方，也不要试图只向您提供他们的对等方
恶意控制。

考虑到这一点，这个包为
以非确定性方式缓存和选择对等点。一般的想法是
调用者向地址管理器添加地址，并在地址出现时通知它
已连接、已知良好且已尝试。呼叫者还请求地址为
它需要它们。

地址管理器在内部将地址分为组和
非确定性以密码随机方式选择组。这个
减少从同一个网络中选择多个地址的机会
通常有助于提供更大的同龄人多样性，或许更重要的是，
极大地降低了攻击者迫使你的同伴
仅连接到它们控制的节点。

地址管理器还了解可路由性和ToR地址并尝试
很难只返回可路由地址。此外，它使用信息
由调用者提供有关连接的、已知良好的和尝试的地址
定期清除不再是好对等的对等
将选择偏向于已知的优秀同行。总的想法是
只提供可用地址的努力。
**/

package addrmgr
